<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 数组中占比超过一半的元素称之为主要元素。 给定一个整数数组， 找到它的主要元素。 若没有， 返回 - 1。

    // 示例 1：
    // 输入：[1, 2, 5, 9, 5, 9, 5, 5, 5]
    // 输出： 5

    // 示例 2：
    // 输入：[3, 2]
    // 输出： - 1


    // 示例 3：
    // 输入：[2, 2, 1, 1, 1, 2, 2]
    // 输出： 2

    /**
     * @param {number[]} nums
     * @return {number}
     */
    // var majorityElement = function (nums) {
    //   let arr = [],
    //       num = 0,
    //       max = 0;
    //   nums.forEach(val => {
    //     arr.push(nums.filter(val2 => val === val2))
    //   })

    //   for (let i = 0; i < arr.length; i++) {
    //     if(arr[i].length>nums.length/2){
    //       return arr[i][0]
    //     }
    //     if(arr[i].length>max){
    //       max = arr[i].length
    //       num = arr[i][0]
    //     }
    //   }

    //   if(max>nums.length/2){
    //     return num
    //   }else{
    //     return -1
    //   }
    // };

    var majorityElement = function (nums) {
      let map = new Map(),
          max = -Infinity,
          len = nums.length/2;

      for (let i = 0; i < nums.length; i++) {
        const curr = nums[i];
        map.set(curr,map.has(curr)?map.get(curr) + 1 : 1)
        max = Math.max(max,map.get(curr))
        if(max>len){
            return curr
        }
      }

      return -1
    };

    console.log(majorityElement([3,2,3]));
  </script>
</body>

</html>